---
title: Что такое BSD
authors:
  - author: Greg Lehey
    email: grog@FreeBSD.org
trademarks: ["freebsd", "amd", "apple", "intel", "linux", "opengroup", "sparc", "sun", "unix", "general"]
---

= Что такое BSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/explaining-bsd/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Аннотация

В мире программ с открытыми исходниками, слово "Linux" практически стало синонимом слова "Операционная Система", хотя это далеко не единственная операционная система UNIX(R), исходные коды которой доступны широкой публике. Согласно данным http://www.leb.net/hzo/ioscount/data/r.9904.txt[Internet Operating System Counter], в апреле 1999-го 31,3% всех подключённых к Internet машин работали под Linux. 14,6% использовали BSD UNIX(R). Некоторые из мировых лидеров в области Web-услуг, например http://www.yahoo.com/[Yahoo!], работают под BSD. Самый загруженный в мире FTP-сервер 1999 года (сейчас он не работает), link:ftp://ftp.cdrom.com/[ftp.cdrom.com], функционировал под управлением BSD и передавал 1,4 Тбайта данных в день. Очевидно, что это не узкий, специализированный рынок: можно сказать, что BSD - это тщательно скрываемая тайна.

Так в чём же секрет? Почему известность BSD оставляет желать лучшего? Эта публикация ставить целью ответить на эти и другие вопросы.

На протяжении всего текста обращайте внимание на _выделенные_ отличия BSD от Linux.

'''

toc::[]

[[what-is-bsd]]
== Что такое BSD?

BSD означает "Berkeley Software Distribution". Так называлось программное обеспечение, распространявшееся в исходных кодах Калифорнийским Университетом в Беркли, которое сначала представляло из себя дополнения к операционной системе UNIX(R) компании AT&T. На основе версии 4.4BSD-Lite были созданы несколько операционных систем с открытыми исходными кодами. В их состав включены разработки других проектов, среди которых особо следует выделить Проект GNU. Вот что такое собственно операционная система BSD:

* Ядро BSD, отвечающее за планировку процессов, управление памятью, поддержку многопроцессорных систем (SMP), работу с устройствами и так далее.
+ 
__В отличие от Linux, существует несколько ядер BSD, отличающихся возможностями.__
* Библиотека C, основной системный интерфейс программирования.
+ 
__Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU.__
* Оболочки, файловые утилиты, компиляторы, редакторы связей и другие утилиты пользователя.
+ 
__Некоторые из них базируются на коде GNU, а некоторые -- нет.__
* Система X Window, отвечающая за графический интерфейс.
+ 
Система X Window, которая используется в большинстве версий BSD, поддерживается http://www.X.org/[проектом X.Org]. FreeBSD дает пользователю возможность выбирать из множества графических оболочек, таких как GNOME, KDE или Xfce; а также из множества легких оконных менеджеров наподобие Openbox, Fluxbox или Awesome.
* Множество разных других прикладных и системных программ.

[[what-a-real-unix]]
== Что, настоящий UNIX(R)?

Операционные системы BSD не являются клонами друг друга. Они лишь потомки общего предка, ОС UNIX(R) от AT&T Research, которая также дала начало современной ОС UNIX(R) System V. Это факт может удивить, если вспомнить, что AT&T никогда не открывала исходные коды своих разработок.

Действительно, UNIX(R) никогда не был программным обеспечением с открытым исходным кодом, и в законном смысле BSD определённо _НЕ_ UNIX(R). Но с другой стороны, в AT&T активно использовали чужие разработки, например программное обеспечение, разрабатываемое Группой по Исследованиям в области Информатики (CSRG) Калифорнийского Университета в Беркли. С 1976 CSRG выпускала свой код на магнитных лентах под названием __Berkely Software Distribution__, сокращённо __BSD__.

Изначально дистрибутивы BSD представляли собой наборы пользовательских программ, и так было до тех пор, пока CSRG не заключила контракт с Агентством по Перспективным Проектам при Министерстве Обороны США (DARPA). Целью контракта было обновление коммуникационных протоколов, на которых держалась компьютерная сеть агентства -- ARPANET. Новое семейство протоколов получило имя _Internet Protocols_ или __TCP/IP__, по названиям двух основных протоколов. Их первая широко известная реализация была выпущена в составе 4.2BSD в 1982 году.

В течение восьмидесятых годов образовалось несколько компаний по производству рабочих станций. Многие из них предпочли купить лицензию на UNIX(R), нежели разрабатывать своё ПО с нуля. Следует отметить компанию Sun, которая поступила именно таким образом и на основе 4.2BSD выпустила свою операционную систему SunOS(TM). Когда AT&T тоже решила заняться коммерческой продажей своей ОС UNIX(R), появилась на свет несколько аскетичная реализация под названием System III, за которой в скором времени последовала System V. Интересно, что эти версии не содержали в себе собственной поддержки работы в сети и использовали код BSD, в том числе реализацию TCP/IP и набор утилит, среди которых следует выделить оболочку _csh_ и текстовый редактор __vi__. Все эти "добавки" совместно получили название __Berkely Extensions__.

Дистрибутив BSD содержал код, принадлежавший AT&T, и, следовательно, требовал лицензии. К 1990 году финансирование CSRG прекратилось, и группа была распущена. Кое-кто из бывших членов группы решил опубликовать код BSD отдельно от закрытого кода AT&T. В концe концов это удалось, и так появилась на свет версия _Networking Tape 2_ или __Net/2__. Net/2 не была законченной, цельной операционной системой: около 20% кода ядра отсутствовало. Один из членов CSRG, William F. Jolitz, дописал недостающий код и опубликовал результат в начале 1992 года под именем __386BSD__. В то же самое время другая группа бывших членов CSRG организовала коммерческую компанию http://www.bsdi.com/[Berkeley Software Design Inc.] и выпустила бета-версию операционной системы http://www.bsdi.com/[BSD/386], которая базировалась на том же самом коде. Позже это название было изменено на BSD/OS.

386BSD так никогда и не стала полноценной операционной системой. Зато в 1993 году из неё выделились два проекта: http://www.NetBSD.org/[NetBSD] и link:https://www.FreeBSD.org/[FreeBSD]. Изначально разработчики разделились на два лагеря из-за расхождений во мнениях относительно того, сколько же ещё можно ждать улучшений в 386BSD. В начале года образовалась NetBSD, а первая версия FreeBSD была готова только к его концу. Время шло, и технические различия возрастали. Вдобавок проекты поставили перед собой разные цели, как будет показано ниже. В 1996 году от NetBSD отделился ещё один проект - http://www.OpenBSD.org/[OpenBSD], а в 2003 году от FreeBSD отделилась http://www.dragonflybsd.org/[DragonFlyBSD].

[[why-is-bsd-not-better-known]]
== Почему BSD недостаточно известна?

Действительно, существует ряд причин этому недоразумению:

. Разработчики BSD часто больше заинтересованы в качестве своего кода и заняты его "шлифовкой", а не рекламой.
. По большому счёту Linux своей популярностью обязан прежде всего внешним по отношению к проекту факторам, например средствам массовой информации и компаниям, которые решили сделать бизнес на предоставлении услуг пользователям Linux.
. Разработчики BSD, как правило, более опытны, чем разработчики Linux, и в силу этого часто уделяют меньше внимания облегчению жизни простым пользователям. Новичок чувствует себя более комфортно в среде Linux.
. В 1992 году компания AT&T подала в суд на http://www.bsdi.com/[BSDI], компанию-поставщика ОС BSD/386. Основным пунктом обвинения было то, что BSD/386 содержала в себе закрытый код, принадлежавший AT&T. Дело вроде бы уладили за пределами суда в 1994-ом, но целая серия вторичных тяжб и по сей день отравляет жизнь многим людям. Совсем недавно, в марте 2000, в Internet была опубликована статья, утверждавшая, что судебное разбирательство окончательно завершено ("recently settled").
+ 
В результате разбирательства прояснился вопрос с названиями: если в 80-х годах BSD была известна под именем "BSD UNIX(R)", то с исключением последних следов кода, принадлежавшего AT&T, BSD потеряла право называться UNIX(R). Вы можете заметить этот факт по изменившимся заглавиям книг: "операционная система 4.3BSD UNIX(R)" и "операционная система 4.4BSD".
. Существует мнение, что проекты BSD сильно отличаются и, в добавок, "воюют" между собой. http://interactive.wsj.com/bin/login?Tag=/&URI=/archive/retrieve.cgi%253Fid%253DSB952470579348918651.djm&[Статья в Wall Street Journal] называет это "балканизацией" среди проектов BSD. Можно утверждать, что такое мнение, как и описанная судебная тяжба, основывается прежде всего на событиях давно минувших дней.

[[compairing-bsd-and-linux]]
== Сравнение BSD и Linux

В чём заключается главная разница, к примеру, между Debian Linux и FreeBSD? Для среднего пользователя она на удивление мала: оба продукта представляют собой UNIX(R)-подобные операционные системы. Оба продукта разрабатываются на некоммерческой основе (это не относится к некоторым другим дистрибутивам Linux). В этом разделе мы рассмотрим BSD в сравнении с Linux. Всё сказанное в основном будет касаться FreeBSD, которой принадлежит около 80% всех инсталляций BSD в мире, хотя отличия от NetBSD, OpenBSD и DragonFlyBSD в рамках предмета данной статьи незначительны.

=== Кому принадлежит BSD?

Нельзя сказать, что какой-то конкретный человек или корпорация владеет BSD. Разработка и распространение ведутся группой высококвалифицированных и преданных проекту специалистов со всего мира. Некоторые компоненты BSD представляют собой отдельные проекты с открытым кодом со своими законами и коллективами разработчиков.

=== Как выглядит процесс разработки и обновления BSD?

Ядра BSD используют Open Source модель разработки. Каждый проект поддерживает публично доступное _дерево исходников_ с помощью http://www.cvshome.org/[Concurrent Versions System] (CVS). Это дерево содержит абсолютно весь исходный код проекта, а также документацию и вспомогательные файлы. CVS позволяет пользователям получить копию дерева любой версии системы.

Огромное число людей со всего мира участвуют в совершенствовании BSD. Все они разделены на три группы:

* _Контрибуторы_ пишут код или документацию. Они не могут добавлять или изменять код непосредственно в дереве исходников проекта. Это привилегия особым образом зарегистрированных разработчиков, или __коммиттеров (committers)__, которые просматривают и тестируют присылаемый им код и включают его в дерево.
* _Коммиттеры_ являются разработчиками, которые имеют доступ на запись в дерево исходных кодов проекта. Чтобы стать коммиттером, человек должен проявить себя в той области, в которой он хочет работать.
+ 
Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему подтверждение правильности планируемых изменений от других разработчиков или нет. В общем случае опытный коммиттер может вносить очевидно выгодные изменения ни с кем не советуясь. К примеру, коммиттер проекта документации может исправлять опечатки или грамматические ошибки в документах без предварительного согласования. Напротив, далеко идущие или просто сложные изменения настоятельно рекомендуется представлять к обсуждению перед окончательным внесением в дерево. Бывают крайние случаи, когда член Core Team, выполняющий функцию архитектора проекта, может санкционировать немедленную отмену или _откат_ каких-то изменений в дереве. Все коммиттеры обязательно получают уведомление о каждом изменении в дереве по электронной почте, так что их невозможно сохранить в тайне.
* _Правление_ (Core Team). В проектах FreeBSD и NetBSD имеются управляющие советы, которые занимаются координационной деятельностью. Их роль, права и обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) быть коммиттером для того, чтобы входить в состав Core Team. Правила, которым следует Core Team, различаются между проектами, но в общем случае члены Core Team определяют общее направление развития системы в большей степени, чем все остальные разработчики.

Такое положение вещей отличается от принятого в Linux:

. Не существует человека, который бы контролировал содержимое системы. На практике значение этого отличия оказывается переоценённым, так как Ведущий Архитектор может всегда потребовать откат изменений. Ко всему прочему, в проекте Linux на современном этапе изменения в код вносятся тоже не одним, а несколькими людьми.
. С другой стороны, _существует_ центральное хранилище (repository), откуда можно получить полный код всей системы, причём как современных, так и предыдущих версий.
. Проекты BSD являются цельными "Операционными Системами", а не просто ядрами. Это различие тоже иногда переоценивают: ни BSD, ни Linux не представляют ценности без приложений, а они порой одни и те же в обеих средах.
. В результате формализованной процедуры поддержки единого дерева исходников в CVS процесс разработки BSD является полностью открытым, и мы получаем возможность доступа к любой версии системы по номеру или по дате. CVS также очень хорошо подходит для последовательных изменений в коде: к примеру, хранилище кода FreeBSD обновляется около ста раз за день, и большинство этих изменений весьма малы и незначительны в отдельности друг от друга.

=== Версии BSD

FreeBSD, NetBSD и OpenBSD предоставляет миру три различных варианта системы. Как и в Linux, версиям присваиваются номера, например 1.4.1 или 3.5. В добавок, номер версии имеет суффикс -- обозначение варианта, которое указывает на цели той или иной версии.

. Версия для разработчиков носит название _CURRENT_. FreeBSD присваивает ей и номер, например FreeBSD 5.0-CURRENT. NetBSD использует чуть-чуть другую схему наименований и добавляет к номеру однобуквенный суффикс, обозначающий изменения во внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не нумерует разрабатываемую версию ("OpenBSD-current"). Все новые разработки производятся именно на этой "ветке" (branch) системы.
. Через определённые интервалы от 3 до 6 месяцев проект выпускает версию _RELEASE_, которая распространяется на CD-ROM и доступна для скачивания с серверов FTP. Примерами таких версий могут служить OpenBSD 2.6-RELEASE и NetBSD 1.4-RELEASE. Этот вариант предназначен для конечных пользователей. NetBSD также предоставляет так называемые __исправленные релизы (patch releases)__, обозначаемые третьей цифрой в номере, например NetBSD 1.4.2.
. По мере обнаружения ошибок в версии RELEASE необходимые исправления вносятся в дерево CVS. Получающаяся система в проекте FreeBSD носит название _STABLE_, а в NetBSD и OpenBSD продолжает называться RELEASE. Некоторые мелкие улучшения тоже иногда вносятся в эту версию после продолжительного периода тестирования в CURRENT.

_Linux, напротив, поддерживает два различных дерева исходников, которые называются соответственно стабильной версией и версией для разработчиков. Стабильные версии имеют чётный вторичный номер, например 2.0, 2.2 или 2.4. Версии для разработчиков используют нечётные номера, такие как 2.1, 2.3 или 2.5. Во обоих случаях, к двойному номеру версии добавляется ещё одно число, указывающее на конкретный релиз. Стоит также отметить, что каждый поставщик предоставляет свой собственный вариант пользовательских программ (userland), так что имя дистрибутива тоже имеет значение. Естественно, что поставщики нумеруют свои изделия каждый по-своему, и, таким образом, мы получаем что-то вроде "TurboLinux 6.0 с ядром 2.2.14"._

=== Какие существуют варианты BSD?

В отличие от многочисленных дистрибутивов Linux, в мире существует лишь четыре крупных BSD проекта с открытыми исходными кодами. Каждый из них поддерживает своё собственное дерево исходников и своё собственное ядро. На практике однако оказывается, что пользовательские части (userland) различных BSD отличаются гораздо меньше, чем у разных дистрибутивов Linux.

Цели каждого из проектов не поддаются чёткой формулировке. Различия между ними весьма субъективны. В основном,

* проект FreeBSD нацелен на повышение производительности и простоту в использовании конечными пользователями. FreeBSD очень ценят в среде web-хостеров. Эта ОС работает на link:https://www.FreeBSD.org/platforms/[нескольких аппаратных платформах], число пользователей FreeBSD значительно превышает число пользователей других проектов.
* проект NetBSD ставит целью максимальную мобильность (или переносимость) кода: девиз "конечно NetBSD работает на этом". NetBSD поддерживает машины от крошечных палмтопов до огромных серверов и использовалась NASA в космических миссиях. Это хороший выбор для старой не-Intel(R) аппаратуры.
* проект OpenBSD нацелен на безопасность и "чистоту" кода. С помощью комбинирования концепций открытых исходников и скрупулёзного анализа кода проект демонстрирует чудеса корректности работы системы. В силу названных причин совершенно естественно, что OpenBSD выбирают организации, для которых очень важна защита информации, например банки, фондовые биржи и различные департаменты правительства США. Также как и NetBSD, проект поддерживает целый ряд аппаратных платформ.
* Целью DragonFlyBSD является достижение высокой производительности и масштабируемости в любой ситуации-как для одиночных однопроцессорных, так и крупных кластерных систем. DragonFlyBSD ставит перед собой несколько долгосрочных технических задач, но основной упор делается на создание инфраструктуры для работы с SMP, которая была бы проста для понимания, поддержки и ведения в ней разработок.

Следует упомянуть ещё две операционных системы BSD UNIX(R), которые не предоставляют публичного доступа к своим исходным кодам. Это BSD/OS компании BSDI и Mac OS(R) X компании Apple.

* BSD/OS являлась самым старым из потомков 4.4BSD. Исходный код был недоступен широкой публике, хотя лицензия на него стоила относительно немного. BSD/OS во многом похожа на FreeBSD. Через два года после поглощения BSDi компанией Wind River Systems, BSD/OS перестала существовать как отдельный продукт. Поддержку и исходный код ещё можно получить у Wind River, но все новые разработки сосредоточены на встраиваемой операционной системой VxWorks.
* http://www.apple.com/macosx/server/[Mac OS(R) X] - это самая последняя версия операционной системы для линейки компьютеров Apple(R) Mac(R). Ядро этой операционной системы, http://developer.apple.com/darwin/[Darwin], построенное на коде BSD, доступно в виде полностью функциональной операционной системы с открытым кодом для компьютеров архитектур x86 и PPC. Однако код графической системы Aqua/Quartz и многих других проприетарных компонентов Mac OS(R) X остаётся закрытым. Несколько разработчиков Darwin являются также коммиттерами FreeBSD и наоборот.

=== В чём отличие между лицензией BSD и Общественной Лицензией GNU (GPL)?

Linux распространяется на условиях лицензии http://www.fsf.org/copyleft/gpl.html[GNU General Public License] (GPL), русский перевод которой тоже http://www.gnu.org/copyleft/copyleft.ru.html[существует]. Эта лицензия имеет целью уничтожить программное обеспечение с закрытым исходным кодом. В частности, любое ПО, базирующееся на продукте, выпущенном на условиях лицензии GPL, тоже должно поставляться с исходными кодами по первому требованию. http://www.opensource.org/licenses/bsd-license.html[Лицензия BSD] не накладывает таких жёстких ограничений: разрешается распространение программного обеспечения в двоичном виде (binary-only). Этот факт привлекает разработчиков встроенных (embedded) приложений.

=== Что ещё следует знать?

То обстоятельство, что приложений для BSD существует меньше, чем для Linux, вынудило разработчиков BSD позаботиться о создании дополнительной совместимости с Linux, которая позволяет запускать программы для Linux на компьютере, работающем под BSD. Программный пакет, обеспечивающий совместимость, включает в себя как ядерную реализацию системных вызовов Linux, так и разнообразные файлы, необходимые программам, скомпилированным для Linux, например библиотеку C. Разница в скорости выполнения Linux-приложений на машине с Linux и на такой же машине с BSD незаметна.

Принцип "вся система от одного поставщика", используемый в BSD, приводит к упрощению процедур обновления системы по сравнению с многими дистрибутивами Linux. BSD предоставляет специальные модули совместимости с устаревшими версиями системных библиотек, и таким образом делает возможным запуск откомпилированных несколько лет назад программ на обновлённой системе.

=== Что же выбрать, BSD или Linux?

Во что выливается всё вышесказанное на практике? Кому предназначена BSD, и кому -- Linux?

Это действительно очень сложный вопрос. Приведём несколько советов, которые призваны помочь Вам с выбором:

* "Не тронь, пока работает": если Вы уже успешно используете какую-нибудь Open Source ОС, и она Вас устраивает, то пожалуй не стоит ничего менять.
* Системы BSD, в особенности FreeBSD, могут демонстрировать большую по сравнению с Linux производительность. Но это вовсе не универсальное правило. Во многих случаях эта разница не заметна, если вообще есть. Иногда Linux может работать лучше, чем FreeBSD.
* В общем случае, у систем BSD очень хорошая репутация, когда дело касается надёжности. Это, в основном, связано с более "зрелой" базой исходных кодов.
* BSD проекты имеют более лучшую репутацию за качество и полноту документации. Различные проекты документирования ставят своей целью предоставлять активно изменяющуюся документацию, в том числе и на нескольких языках и покрывающую все аспекты системы.
* Лицензия BSD иногда может быть более привлекательной, нежели GPL.
* В BSD может работать большинство исполнимых файлов Linux, однако в Linux выполнимые файлы BSD запускаться не будут. Во многих реализациях BSD могут также выполняться двоичные файл и других UNIX(R)-подобных систем. Таким образом, BSD может предложить более простой способ перехода с других систем, чем Linux.

=== Кто предоставляет техническую поддержку, обслуживание и обучение для систем BSD?

BSDi / http://www.freebsdmall.com[FreeBSD Mall, Inc.] уже около десяти лет предлагает контракты на поддержку FreeBSD.

Кроме того, каждый из проектов постоянно обновляет список консультантов, которые оказывают поддержку за отдельную плату: link:https://www.FreeBSD.org/commercial/consult_bycat/[FreeBSD], http://www.NetBSD.org/gallery/consultants.html[NetBSD] и http://www.OpenBSD.org/support.html[OpenBSD].
